package com.scu.hotelsystem.service;

import com.scu.hotelsystem.pojo.Staff;

import java.sql.SQLIntegrityConstraintViolationException;
import java.util.List;

public interface StaffService {
    int FAILED = -1;
    int SEARCH_MODE_NONE = 0;
    int SEARCH_MODE_ID = 1;
    int SEARCH_MODE_PHONE = 2;
    int SEARCH_MODE_NAME = 3;

    /**
     * 验证员工登录信息
     * @param account 账户-ID/手机
     * @param password 密码
     * @return 成功返回人员ID，失败返回-1
     */
    int verifyLogin(String account, String password);

    /**
     * 获取某页员工列表
     * @param index 起始位置
     * @param limit 长度
     * @return
     */
    List<Staff> getStaffList(int index, int limit);

    /**
     * 按条件筛选获取某页员工列表
     * @param search 筛选条件
     * @param index 起始位置
     * @param limit 长度
     * @return
     */
    List<Staff> searchStaffList(Staff search, int index, int limit);

    /**
     * 修改员工信息
     * @param staff
     * @return 成功1，失败0
     * @throws SQLIntegrityConstraintViolationException 手机或身份证号已被使用
     */
    int updateStaff(Staff staff) throws SQLIntegrityConstraintViolationException;

    /**
     * 添加员工
     * @param staff
     * @return 成功1或2，失败0
     * @throws SQLIntegrityConstraintViolationException 手机或身份证号已被使用,或被分别绑定
     */
    int addStaff(Staff staff) throws SQLIntegrityConstraintViolationException;

    /**
     * 批量删除员工
     * @param idList ID数组
     * @return >0成功，=0失败
     * @throws IllegalArgumentException 传入数组不能为空
     */
    int deleteStaff(int[] idList) throws IllegalArgumentException;
}
